home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / asm / pc370_3.exe / lha / T370.ALC < prev    next >
Text File  |  1988-01-03  |  28KB  |  954 lines

  1.     TITLE 'T370  - CONVERT A370 OBJ FILE TO 370 OBJECT FORMAT'
  2. *
  3. * PGM-ID.  T370.ALC
  4. * AUTHOR.  DON HIGGINS.
  5. * DATE.    08/13/87.
  6. * REMARKS. THIS PROGRAM READS OBJ FILE CREATED BY A370 AND
  7. *          CREATES 370 RELOCATABLE OBJECT DECK FILE.
  8. * MAINTENANCE.
  9. *
  10. * 08/16/87 COMPLETE INITIAL CODING.
  11. * 08/19/87 COMPLETE INITAL DEBUGGING AND DOCUMENTATION REL 1.0
  12. * 01/03/88 USE STD. OS PARM REL 1.1
  13. *
  14. *
  15. *
  16. * PARMS.   T370  FILE/LCP
  17. *
  18. *          FILE IS NAME OF FILE OF THE TYPE FILE.OBJ.
  19. *          OUTPUT OF T370 IS FILE OF THE TYPE FILE.370.
  20. *          THE OPTIONAL PARMS ARE AS FOLLOWS:
  21. *
  22. *            L - LIST FORMATTED HEX OBJECT RECORDS IN FILE.HEX (DEFAULT OFF).
  23. *            C - LIST FORMATTED HEX OBJECT RECORDS ON CONSOLE  (DEFAULT OFF).
  24. *            P - OUTPUT 370 EBCDIC OBJECT RECORDS TO FILE.370. (DEFAULT ON).
  25. *
  26. *          CODING P ON PARM, TURNS 370 OUTPUT FILE OFF.
  27. *
  28. *          THE FORMAT OF THE OBJECT RECORDS IS AS FOLLOWS:
  29. *
  30. *            TYPE  COLUMN  DESCRIPTION
  31. *
  32. *            ESD    01-01   X'02'  EXTERNAL SYMBOL DICTIONARY ID
  33. *                   02-04   C'ESD'
  34. *                   05-10   BLANK
  35. *                   11-12   NUMBER OF BYTES OF ESD DATA
  36. *                   13-14   BLANK
  37. *                   15-16   ESD IDENTIFIER OF FIRST ITEM OR BLANK FOR LD
  38. *                   17-72   ESD ENTRIES (UP TO 3) AS FOLLOWS:
  39. *                            01-08 NAME OF SD, LD, ER
  40. *                            09-09 TYPE (HEX)
  41. *                                   00 - SD
  42. *                                   01 - LD
  43. *                                   02 - ER
  44. *                            10-12 23 BIT ADDRESS (SD,PC,LD)
  45. *                            13-13 ALIGNMENT FACTOR (HEX)
  46. *                                   07 - DOUBLEWORD
  47. *                                   03 - WORD ALIGNMENT
  48. *                                   01 - HALF WORD
  49. *                                   00 - BYTE ALIGNMENT
  50. *                            14-16 ZERO IF LENGTH ON END RECORD
  51. *                                  LENGTH OF CONTROL SECTION
  52. *                                  IDENTIFIER OF SD CONTAINING NAME
  53. *                                  BLANK IF ER
  54. *                   73-80   RECORD SEQUENCE FIELD NOT USED BY LINKERS
  55. *
  56. *            TXT    01-01   X'02'
  57. *                   02-04   C'TXT'
  58. *                   05-05   BLANK
  59. *                   06-08   24 BIT ADDRESS OF FIRST BYTE OF TEXT
  60. *                   09-10   BLANK
  61. *                   11-12   NUMBER OF BYTES OF TEXT
  62. *                   13-14   BLANK
  63. *                   15-16   ESD IDENTIFIER OF SD CONTAINING THIS TEXT
  64. *                   17-72   TEXT DATA
  65. *                   73-80   RECORD SEQUENCE FIELD NOT USED BY LINKERS
  66. *
  67. *            RLD    01-01   X'02'
  68. *                   02-04   C'RLD'
  69. *                   05-10   BLANK
  70. *                   11-12   NUMBER OF BYTES OF RLD DATA
  71. *                   13-16   BLANK
  72. *                   17-72   RLD DATA ENTRIES AS FOLLOWS:
  73. *                            01-02 ESDID OF CESD ENTRY FOR SYMBOL BEING DEFINED
  74. *                            03-04 ESDID OF SD CONTAINING ADDRESS CONSTANT
  75. *                            05-05 FLAG FIELD (TTTTLLST)
  76. *
  77. *                                  TTTT - 0000 NONBRANCH
  78. *                                         0001 BRANCH
  79. *                                         0011 PSEUDO REGISTER
  80. *                                    LL - 01   TWO BYTES
  81. *                                         10   THREE BYTES
  82. *                                         11   FOUR BYTES
  83. *                                     S - 0    POSITIVE RELOCATION
  84. *                                         1    NEGATIVE RELOCATION
  85. *                                     T - 0    NEXT RLD ENTRY HAS POINTERS
  86. *                                         1    NEXT RLD HAS SAME POINTERS
  87. *                                              (BYTES 01-04 OMITTED FOR NEXT)
  88. *
  89. *                   73-80   RECORD SEQUENCE FIELD NOT USED BY LINKERS
  90. *
  91. *            END    01-01   X'02'
  92. *                   02-04   C'END'
  93. *                   05-05   BLANK
  94. *                   06-08   24 BIT ADDRESS OF ENTRY POINT (OPTIONAL)
  95. *                   09-14   BLANK
  96. *                   15-16   ESDID OF SD CONTAINING ENTRY
  97. *                   17-28   BLANK
  98. *                   29-32   CONTROL SECTION LENGTH IF NOT IN SD
  99. *                           (29=X'00' IF PRESENT)
  100. *                   33-72   BLANK
  101. *                   73-80   RECORD SEQUENCE FIELD NOT USED
  102. *
  103. *          THE INPUT FILE FORMAT IS AN EXTENSION OF MICROSOFT
  104. *          M80 MACRO ASSEMBLER RELOCATABLE BIT STREAM FILE.
  105. *
  106. *          FOR EXAMPLE, RUN BAT\RUNUTIL.BAT.
  107. *
  108. T370     CSECT
  109.     LR    R12,R15
  110.     LA    R13,2048(R12)
  111.     LA    R13,2048(R13)
  112.     USING T370,R12
  113.     USING T370+4096,R13
  114.     LA    R2,=C'T370.COM R1.1 - CONVERT PC/370 OBJ FILE TO 370 FILE$'
  115.     SVC   WTO
  116.     BAL   R14,INIT   GET PARMS AND INITIALIZE FILES
  117.     BNZ   EOJ
  118.     SR    R6,R6      NO BITS
  119.     LA    R7,UT1RCD+L'UT1RCD  FORCE BUFFER RELOAD
  120.     LA    R8,4
  121.     LA    R9,UT1RCD+L'UT1RCD  END OF BUFFER FOR BXH
  122. LOOP     EQU   *
  123.     BAL   R14,GBIT   IF NEXT BIT 0, NEXT BYTE IS ABS TEXT
  124.     BNZ   NOTTXT
  125. TXTTYPE  EQU   *          GET NEXT ABS BYTE AND STORE IN TXT RECORD
  126.     BAL   R14,GBYTE
  127.     LM    R1,R3,TXTREGS
  128.     STC   R4,0(R1)   SAVE BYTE IN TEXT TABLE
  129.     LA    R1,1(R1)   INC TABLE POINTER
  130.     LA    R3,1(R3)   INC BYTE COUNT
  131.     STM   R1,R3,TXTREGS
  132.     CLR   R1,R2
  133.     BL    LOOP       IF TXT RECORD NOT FULL, CONTINUE
  134.     BAL   R14,PUTTXT
  135.     B     LOOP
  136. NOTTXT   EQU   *          GET NEXT TWO BITS TO FORM 3 BIT TYPE OF ENTRY
  137.     LR    R3,R4
  138.     SLL   R3,1
  139.     BAL   R14,GBIT
  140.     OR    R3,R4
  141.     SLL   R3,1
  142.     BAL   R14,GBIT
  143.     OR    R3,R4      R3 = THREE BIT TYPE
  144.     CLM   R3,1,=AL1(LNKTYP)
  145.     BE    LNKTYPE    IF LINK TYPE, GO PROCESS ESD, RLD, ETC.
  146. RELTYPE  EQU   *          ELSE 16 BIT RELOCATED WORD
  147.     LA    R2,=C'RELATIVE 16 BIT WORDS NOT ALLOWED IN 370 OBJ$'
  148.     SVC   WTO
  149.     B     EOJ
  150. LNKTYPE  EQU   *          BRANCH TO TYPE OF SPECIAL LINKAGE ENTRY
  151.     BAL   R14,GBIT   BASED ON NEXT 4 BIT TYPE CODE
  152.     LR    R3,R4
  153.     SLL   R3,1
  154.     BAL   R14,GBIT
  155.     OR    R3,R4
  156.     SLL   R3,1
  157.     BAL   R14,GBIT
  158.     OR    R3,R4
  159.     SLL   R3,1
  160.     BAL   R14,GBIT
  161.     OR    R3,R4      R3 = LINK TYPE
  162.     AR    R3,R3
  163.     AR    R3,R3
  164.     L     R4,LNKRTN(R3)  R4 = ADDRESS OF LINK ROUTINE LT0-LTF
  165.     BAL   R14,PUTTXT     FLUSH TXT BEFORE PROCESSING LINK TYPE
  166.     BR    R4             JUMP
  167. EOJ      EQU   *          END OF FILE AT PHYSICAL EOF OR ERROR
  168.     LA    R2,SYSUT1
  169.     SVC   CLOSE          CLOSE INPUT
  170.     CLI   OPTIONP,TRUE
  171.     BNE   SKPCLSP
  172.     LA    R2,SYSUT2
  173.     SVC   CLOSE          CLOSE 370 IF OPEN
  174. SKPCLSP  EQU   *
  175.     CLI   OPTIONL,TRUE
  176.     BNE   SKPCLSL
  177.     LA    R2,SYSPRINT
  178.     SVC   CLOSE          CLOSE HEX IF OPEN
  179. SKPCLSL  EQU   *
  180.     LA    R2,=C'T370 COMPLETE$'
  181.     SVC   WTO
  182.     SVC   EXIT
  183. INIT     EQU   *    GET FILE NAMES FROM PARM AND SET OPTIONS
  184.     L     R1,0(R1)
  185.     LH    R0,0(R1)
  186.     SH    R0,=H'1'
  187.     BNP   INITERR   NO FILE SPECIFIED
  188.     LA    R2,3(R1)  SKIP BLANK CHAR LEADING FILENAME
  189.     LR    R1,R0
  190.     LR    R3,R0     SAVE FOR INITFILE
  191. FINDSLSH EQU   *
  192.     CLI   0(R2),C'/'
  193.     BE    SETOPT
  194.     LA    R2,1(R2)
  195.     BCT   R1,FINDSLSH
  196. NOTFOUND EQU   *            NO OPTIONS SPECIFIED
  197.     LR    R1,R3
  198. INITFILE EQU   *            BUILD FILE NAMES WITH SUFFIXES
  199.     EX    R1,MVCUT1
  200.     EX    R1,MVCUT2
  201.     EX    R1,MVCPRT
  202.     LA    R2,UT1DSN(R1)
  203.     MVC   0(5,R2),UT1SFX
  204.     LA    R2,UT2DSN(R1)
  205.     MVC   0(5,R2),UT2SFX
  206.     LA    R2,PRTDSN(R1)
  207.     MVC   0(5,R2),PRTSFX
  208.     LA    R2,=C' $'
  209.     SVC   WTO
  210.     LA    R2,OPTLINE      DISPLAY OPTIONS SET
  211.     SVC   WTO
  212.     LA    R2,=C' $'
  213.     SVC   WTO
  214.     LA    R2,SYSUT1
  215.     SVC   SEARCH          ISSUE ERROR IF OBJ FILE NOT FOUND
  216.     CLM   R0,1,=X'00'
  217.     BNE   INITERR
  218.     LA    R2,SYSUT1
  219.     SVC   OPEN            OPEN OBJ INPUT
  220.     CLI   OPTIONP,TRUE
  221.     BNE   SKPOPNP
  222.     LA    R2,SYSUT2
  223.     SVC   OPEN            OPEN 370 OUTPUT
  224. SKPOPNP  EQU   *
  225.     CLI   OPTIONL,TRUE
  226.     BNE   SKPOPNL
  227.     LA    R2,SYSPRINT
  228.     SVC   OPEN            OPEN HEX OUTPUT
  229. SKPOPNL  EQU   *
  230.     SR    R0,R0
  231.     BR    R14
  232. INITERR  EQU   *
  233.     LA    R2,=C'INVALID FILE NAME$'
  234.     SVC   WTO
  235.     SVC   EXIT
  236. MVCUT1   MVC   UT1DSN(0),TBUFF+7
  237. MVCUT2   MVC   UT2DSN(0),TBUFF+7
  238. MVCPRT   MVC   PRTDSN(0),TBUFF